package Interfaz;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import Mundo.Evaluador;

public class InterfazPrincipal extends JFrame{

	//-----------------------------------------------------------------
    // Atributos
    //-----------------------------------------------------------------
	
	private Evaluador evaluador;
	
	//-----------------------------------------------------------------
    // Atributos de la interfaz
    //-----------------------------------------------------------------
	
	private PanelEncabezado panelEncabezado;
	
	private PanelOperaciones panelOperaciones;
	
	//-----------------------------------------------------------------
    // Constructores
    //-----------------------------------------------------------------

	public InterfazPrincipal( )
    {		
		evaluador = new Evaluador();
		
		//Construye la forma
		setTitle( "Sistema de Operación Postfix" );
        setSize( 400, 400 );
        setResizable( false );
        setLocationRelativeTo( null );
        setLayout( new GridBagLayout( ) );
        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        // Construir los paneles
        panelEncabezado = new PanelEncabezado( );
        GridBagConstraints gbc = new GridBagConstraints( );
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.fill = GridBagConstraints.BOTH;
        add( panelEncabezado, gbc );
        
        panelOperaciones = new PanelOperaciones( this );
        gbc = new GridBagConstraints( );
        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.fill = GridBagConstraints.BOTH;
        add( panelOperaciones, gbc );
        
    }

	
	// -----------------------------------------------------------------
    // Métodos
    // -----------------------------------------------------------------
	
	public void ingresar (Object elemento, boolean num) 
	{
		evaluador.ingresar(elemento, num);
	}
	
	public int calcular()
	{
		return evaluador.calcular();
	}
	
	public void ayuda(){
		JOptionPane.showMessageDialog(this, "Para que el programa funcione correctamente,\n" +
				"usted debe ingresar operandos y operaciones;\n" +
				"cada elemento debe estar seguido por un enter.\n" + 
				"Sus expresiones Postfix se ejemplifican acontinuación.\n" +
    			"Ej. 2 * 6 = 2 6 *\n     5 + ( ( 1 + 2 ) * 4 ) - 3 = 5 1 2 + 4 * + 3 -","Ayuda", JOptionPane.PLAIN_MESSAGE);
	}
	
	public boolean esNumero()
	{
		return panelOperaciones.esNumero();
	}
	
	public boolean isEmpty()
	{
		return evaluador.isEmpty();
	}
	
	public int tamano()
	{
		return evaluador.tamano();
	}
	
	//-----------------------------------------------------------------
    // Main
    //-----------------------------------------------------------------
	
	public static void main( String[] args )
    {
		InterfazPrincipal principal = new InterfazPrincipal();
		principal.setVisible(true);
    }
}
